package algorithm.swordoff;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

/**
 * 第一个只出现一次的字符
 * 异或操作，两个相同的数异或结果为0，一个数跟0异或是这个数本身。 不能用于本题,因为异或要求其他数字均出现两次,136题
 */

public class SQ50 {

    public char firstUniqChar(String s) {
        // 保存该字符出现次数
        Map<Character, Integer> map = new HashMap<>();
        for (char c : s.toCharArray()) map.put(c, map.getOrDefault(c, 0)+1);
        Set<Character> set = map.entrySet().stream().filter(e -> e.getValue() == 1).map(Map.Entry::getKey).collect(Collectors.toSet());
        for (char c : s.toCharArray()) if (set.contains(c)) return c;
        return ' ';
    }


}
